#include<iostream>
#include<list>
#include<vector>
using namespace std;

//void PrintList(const list<int>& l)
//{
//	for (list<int>::const_iterator it = l.begin(); it != l.end(); ++it)
//	{
//		cout << *it << " ";
//	}
//	cout << endl;
//}
//
//
//int main()
//{
//	//list<int> l1;
//	//list<int> l2(4, 100);
//	//list<int> l3(l2.begin(), l2.end());
//	//list<int> l4(l3);
//	//int array[] = { 6,7,2,9,8,4,3 };
//	//list<int> l5(array, array + sizeof(array) / sizeof(array[0]));
//	//for (auto& e : l5)
//	//{
//	//	cout << e << " ";
//	//}
//	//cout << endl;
//	//list<int>::iterator it = l5.begin();
//	//while (it != l5.end())
//	//{
//	//	cout << *it << " ";
//	//	++it;
//	//}
//	//cout << endl;
//
//	//int array[] = { 1,2,3,4,5,6,7,8,9,0 };
//	//list<int> l(array, array + sizeof(array) / sizeof(array[0]));
//
//	//auto it = l.begin();
//	//while (it != l.end())
//	//{
//	//	cout << *it << " ";
//	//	++it;
//	//}
//	//cout << endl;
//
//	//auto rit = l.rbegin();
//	//while (rit != l.rend())
//	//{
//	//	cout << *rit << " ";
//	//	++rit;
//	//}
//	//cout << endl;
//
//	/*list<int> mylist;
//	int sum(0);
//
//	for (int i = 1; i <= 10; ++i) mylist.push_back(i);
//
//	while (!mylist.empty())
//	{
//		sum += mylist.front();
//		mylist.pop_front();
//	}
//	cout << "tatal:" << sum << '\n';*/
//
//	//list<int> myints;
//	//cout << "0.size:" << myints.size() << '\n';
//
//	//for (int i = 0; i < 10; i++)
//	//{
//	//	myints.push_back(i);
//	//}
//	//cout << "1. size:" << myints.size() << '\n';
//
//	//myints.insert(myints.begin(), 10, 100);
//	//for (list<int>::const_iterator it = myints.begin(); it != myints.end(); ++it)
//	//{
//	//	cout << *it << " ";
//	//}
//	//cout << endl;
//	//std::cout << "2. size: " << myints.size() << '\n';
//
//	//myints.pop_back();
//	//std::cout << "3. size: " << myints.size() << '\n';
//
//	/*int array[] = { 1,2,3 };
//	list<int> L(array, array + sizeof(array) / sizeof(array[0]));
//
//	auto pos = ++L.begin();
//	cout << *pos << endl;
//
//	L.insert(pos, 4);
//	PrintList(L);
//
//	vector<int> v{ 7,8,9 };
//	L.insert(pos, v.begin(), v.end());
//	PrintList(L);*/
//
//	list<int> mylist1, mylist2;
//	list<int>::iterator it;
//	for (int i = 1; i <= 4; ++i)
//		mylist1.push_back(i);
//	for (int i = 1; i <= 3; ++i)
//		mylist2.push_back(i * 10);
//
//	it = mylist1.begin();
//	++it;
//
//	mylist1.splice(it, mylist2);
//
//	return 0;
//}


#include"List.h"

void test_list1()
{
	xlf::List<int> L;

	//实例化就报错
	L.push_back(1);
	L.push_back(2);
	L.push_back(3);
	L.push_back(4);

	xlf::List<int>::iterator it = L.begin();
	while (it != L.end())
	{
		*it += 10; // *it 解引用，返回的是这个节点的数据
		// 此时可以修改这个节点数据的内容
		cout << *it << " ";
		//*it 解引用要的是数值，不是节点，所以运算符重载了operator*()
		++it;
	}
	cout << endl;

	for (auto& e : L)
	{
		cout << e << " ";
	}
	cout << endl;
}



int main()
{
	test_list1();

	return 0;
}